﻿/**********************************************************
File:			Validation.js
Author:			Yongjun Shang
Description:	JavaScript validation functions
**********************************************************/
$.prototype.NumericOnly = function()
{
	this.keydown(function(event)
	{
		var isValid = false;
		if (event.keyCode === 8 ||
			event.keyCode === 9 ||
			(event.keyCode >= 35 && event.keyCode <= 40) ||
			(event.keyCode >= 48 && event.keyCode <= 57) ||
			(event.keyCode >= 96 && event.keyCode <= 105) ||
			event.keyCode === 110 ||
			event.keyCode === 190)
		{
			isValid = true;
		}
		
		return isValid;
	});
};

function IsEmailAddress(dateStr)
{
    var datePat = "^([a-zA-Z0-9]+[a-zA-Z0-9._%-]*@(?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,4})$";
	var matchArray = dateStr.match(datePat); // is the format ok?

	if (matchArray == null)
	{
		return false;
    }
    return true;
}

// ******************************************************************
// This function accepts a string variable and verifies if it is a
// proper date or not. It validates format matching either
// mm-dd-yyyy or mm/dd/yyyy. Then it checks to make sure the month
// has the proper number of days, based on which month it is.

// The function returns true if a valid date, false if not.
// ******************************************************************

function IsDate(dateStr)
{

	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
	var matchArray = dateStr.match(datePat); // is the format ok?

	if (matchArray == null)
	{
		//alert("Please enter date as either mm/dd/yyyy or mm-dd-yyyy.");
		return false;
	}

	month = matchArray[1]; // p@rse date into variables
	day = matchArray[3];
	year = matchArray[5];

	if (month < 1 || month > 12)
	{ // check month range
		//alert("Month must be between 1 and 12.");
		return false;
	}

	if (day < 1 || day > 31)
	{
		//alert("Day must be between 1 and 31.");
		return false;
	}

	if ((month == 4 || month == 6 || month == 9 || month == 11) && day == 31)
	{
		//alert("Month " + month + " doesn`t have 31 days!")
		return false;
	}

	if (month == 2)
	{ // check for february 29th
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day > 29 || (day == 29 && !isleap))
		{
			//alert("February " + year + " doesn`t have " + day + " days!");
			return false;
		}
	}
	return true; // date is valid
}


// ******************************************************************
//validate the input text to be a positive Decimal value or not,
// ******************************************************************
function IsNonNegativeDecimal(sText)
{
    return IsNumeric(sText);
}

// ******************************************************************
//validate the input text to be a positive integer value or not,
// ******************************************************************
function IsPositiveInteger(text)
{
    var ValidChars = "0123456789";
    var IsNumber = true;
    var Char;

    for (i = 0; i < text.length && IsNumber == true; i++)
    {
        Char = text.charAt(i);
        if (ValidChars.indexOf(Char) == -1)
        {
            IsNumber = false;
            break;
        }
    }
    return IsNumber;
}

// notify the ScriptManager that the script has finished loading
if (typeof (Sys) !== "undefined") { Sys.Application.notifyScriptLoaded(); }